import 'package:flutter/animation.dart';
import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

//创建控制器
class AnimationPingYiController extends GetxController with SingleGetTickerProviderMixin  {
  late Animation<double> animation;// 定义动画对象
  late AnimationController controller;// Flutter 内置的动画控制器

  @override
  void onInit() {
    // TODO: implement onInit
    super.onInit();
    controller = AnimationController(
        vsync: this,
        duration: const Duration(milliseconds: 100)//设置动画持续时间
    );

    // 使用 CurvedAnimation 来应用曲线效果
    animation = CurvedAnimation(
      parent: controller,
      curve: Curves.linear, // 使用 easeInOut 曲线
    );

// 创建 Tween，并通过 animate 方法将其与控制器绑定
    animation = Tween<double>(begin: 0.w, end: 99.w).animate(controller)
      ..addListener(() {
        update();  // 使用 GetX 的 update 方法通知更新，重新构建相关的 GetBuilder
      });
  }

  @override
  void onClose() {
    controller.dispose();//清理控制器资源
    // TODO: implement onClose
    super.onClose();
  }

  // 提供一个方法用于反向播放动画
  void reverseAnimation() {
    controller.reverse();
  }
  // 提供一个方法用于启动动画
  void play(){
    controller.forward();//启动动画
  }
}
